package org.example.project_12.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.example.project_12.entity.Document;

import java.util.List;

@Mapper
public interface DocumentMapper {
    
    /**
     * 插入文档
     */
    int insert(Document document);
    
    /**
     * 根据ID查询文档
     */
    Document selectById(@Param("id") Long id);
    
    /**
     * 根据条件查询文档列表
     */
    List<Document> selectList(Document document);
    
    /**
     * 根据作者ID查询文档列表
     */
    List<Document> selectByAuthorId(@Param("authorId") Long authorId);
    
    /**
     * 根据空间ID查询文档列表
     */
    List<Document> selectBySpaceId(@Param("spaceId") Long spaceId);
    
    /**
     * 查询公开文档列表
     */
    List<Document> selectPublicDocuments();
    
    /**
     * 根据标题模糊查询文档
     */
    List<Document> selectByTitleLike(@Param("title") String title);
    
    /**
     * 更新文档
     */
    int update(Document document);
    
    /**
     * 根据ID删除文档
     */
    int deleteById(@Param("id") Long id);
    
    /**
     * 锁定文档
     */
    int lockDocument(@Param("id") Long id, @Param("lockedBy") Long lockedBy);
    
    /**
     * 解锁文档
     */
    int unlockDocument(@Param("id") Long id);
    
    /**
     * 检查文档是否被锁定
     */
    Document selectLockedDocument(@Param("id") Long id);

    /**
     * 查询待审核文档
     */
    List<Document> selectByStatus(@Param("status") String status);
    /**
     * 更新文档状态
     */
    int updateStatus(@Param("id") Long id, @Param("status") String status);
} 